package fr.miage.orleans.aar.ejb;

import java.util.Collection;

import fr.miage.orleans.aar.modele.Equipe;
import fr.miage.orleans.aar.modele.Joueur;
import fr.miage.orleans.aar.modele.PosteJoueur;

/**
 * 
 * Facade pour executer des actions simples
 */
public interface Facade {

	/**
	 * Inscrit une equipe  a un tournoi
	 * @param equipeId l'identifiant de l'équipe
	 * @param tournoiId l'identifiant du tournoi
	 */
    public void inscriptionTournoi(int equipeId, int tournoiId);

    /**
     * Créer un joueur
     * @param nom Le nom du joueur
     * @param prenom Le prenom du joueur
     * @param posteJoueur Son poste
     * @return Le joueur
     */
    public Joueur createJoueur(String nom, String prenom, PosteJoueur posteJoueur);

    /**
     * Creer une equipe sans joueur
     * @param nomEquipe Le nom de l'équipe.
     * @return L'équipe créée
     */
    public Equipe createEquipe(String nomEquipe);

    /**
     * Ajoute un joueur a une equipe
     * @param idEquipe l'identifiant de l'équipe
     * @param idJoueur l'identifiant du joueur a inscrire
     * @return L'équipe avec son nouveau joueur
     */
    public Equipe addJoueurToEquipe(int idEquipe, int idJoueur);

    /**
     * Ajoute une collection de joueurs a une equipe
     * @param equipe L'équipe
     * @param joueurs Les joueurs a ajouter
     * @return La nouvelle equipe avec ses joueurs
     */
    public Equipe addJoueursToEquipe(Equipe equipe, Collection<Joueur> joueurs);

}
